<?php

namespace App\Facades;

use App\Models\User;
use Closure;
use Illuminate\Auth\AuthManager;
use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Support\Facades\Facade;
use Symfony\Component\HttpFoundation\Response;

/**
 * @method static AuthManager extend(string $driver, Closure $callback)
 * @method static AuthManager provider(string $name, Closure $callback)
 * @method static User|null loginUsingId(mixed $id, bool $remember = false)
 * @method static User|null user()
 * @method static Guard|StatefulGuard guard(string|null $name = null)
 * @method static UserProvider|null createUserProvider(string $provider = null)
 * @method static Response|null onceBasic(string $field = 'email', array $extraConditions = [])
 * @method static bool attempt(array $credentials = [], bool $remember = false)
 * @method static bool hasUser()
 * @method static bool check()
 * @method static bool guest()
 * @method static bool once(array $credentials = [])
 * @method static bool onceUsingId(mixed $id)
 * @method static bool validate(array $credentials = [])
 * @method static bool viaRemember()
 * @method static bool|null logoutOtherDevices(string $password, string $attribute = 'password')
 * @method static int|string|null id()
 * @method static void login(User $user, bool $remember = false)
 * @method static void logout()
 * @method static void logoutCurrentDevice()
 * @method static void setUser(User $user)
 * @method static void shouldUse(string $name);
 *
 * @see AuthManager
 * @see \Illuminate\Contracts\Auth\Factory
 * @see Guard
 * @see StatefulGuard
 */
class Api extends Facade
{
    protected static function getFacadeAccessor(): string
    {
        return 'auth';
    }
}
